#if !defined(KEYBDEVENT_H_INCLUDED)
#define KEYBDEVENT_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define SHIFTED 0x80

class CKeybdEvent
{
public:
	static void SingleStroke(HWND hWnd, WORD wVk, WORD wScan = 0);
	static void Combine2Strokes(HWND hWnd, WORD wVk1,WORD wVk2, WORD wScan1 = 0, WORD wScan2 = 0);
	static void Combine3Strokes(HWND hWnd, WORD wVk1, WORD wVk2, WORD wVk3, WORD wScan1 = 0, WORD wScan2 = 0, WORD wScan3 = 0);
	static SHORT VkKeyScan(TCHAR ch);

public:

	CKeybdEvent(WORD wVk, WORD wScan = 0, DWORD dwFlags = 0, DWORD time = 0, ULONG_PTR dwExtraInfo = NULL);
	~CKeybdEvent();

private:

#if (_WIN32_WINNT > 0x0400)

	INPUT m_keybd_event;

#else	// #if (_WIN32_WINNT > 0x0400)

	BYTE m_bVk;
	BYTE m_bScan;
	DWORD m_dwFlags;
	ULONG_PTR m_dwExtraInfo;

#endif	// #if (_WIN32_WINNT > 0x0400)

};

#endif	// #if !defined(KEYBDEVENT_H_INCLUDED)